using System;
using System.Collections.Generic;
using System.Text;
using SharpWars.Core.Graphics;
using System.Drawing;
using SharpWars.Core;
using SWGraphics = SharpWars.Core.Graphics;
using System.Windows.Forms;
using SWInput = SharpWars.Core.Input.Input;
using SWIKey = Microsoft.DirectX.DirectInput.Key;

namespace SharpWars
{
	/// <summary> 
	/// Mapa gry i gra 
	/// Mozna tylko jedna jednostke naraz przesuwac - aktualnie
	///</summary>
	public partial class GameMap : IRenderable
	{
		// Przyklady tworzenie ramek akcji do poprawnego dzialania aplikacji
		/// <summary>  Do testowania sieci </summary>
		private void DebugNetwork()
		{
			lock( GameMap.ActionLock )
			{
				GameAction gaDebug = new GameAction();
				if( SWInput.Keyboard.IsKeyTriggered( SWIKey.Q ) )
				{
					// Dodajemy gracza nr 1 i nr 2 
					// Numery gracza przydziela server
					// Frame number musi byc rozne dla kazdego klienta, bo to numer id, wiece server generuje w petli
					// te numerki
					gaDebug.Frame = 0; // Znaczy ze client ma gracza numer 0, server decyduje o tym
					gaDebug.Player = 2; // Dolacza do gry 2 klientow
					gaDebug.Action = EActionType.WT_GameStart;
					GameMap.ActionQueue.Enqueue( gaDebug );
				}
				else if( SWInput.Keyboard.IsKeyTriggered( SWIKey.W ) )
				{
					// Info ze gra zostala zaladowana i mozna ja rozpoczac
					// np jakies 100ms po wyslaniu GameStart
					gaDebug.Action = EActionType.WT_GameReady;
					GameMap.ActionQueue.Enqueue( gaDebug );
				}
				else if( SWInput.Keyboard.IsKeyTriggered( SWIKey.Z ) )
				{
					Player = 0;
					AddFadeText( "Player=0 Active", 5, Color.LightBlue );
				}
				else if( SWInput.Keyboard.IsKeyTriggered( SWIKey.X ) )
				{
					Player = 1;
					AddFadeText( "Player=1 Active", 5, Color.LightGreen );
				}
			}
		}
	}
}
